#### Business Goal: Time prediction in the world of food delivery
#### Client Ref:
#### Business Goal Affecting Features:
Features that can affect food delivery estimation,
-ID
-Delivery_person_ID
-Delivery_person_Age
-Delivery_person_Ratings
-Restaurant_latitude
-Restaurant_longitude
-Delivery_location_latitude
-Delivery_location_longitude
-Type_of_order
-Type_of_vehicle
DatasetRef: Open Sources
# Base Python Libraries - Data Manipulation
import pandas as pd
import numpy as np
import warnings
warnings.filterwarnings("ignore")
# Loading Data using pandas methods, with variable/object name 'raw'
raw = pd.read_excel(r"C:\Users\vinit\OneDrive\Pictures\Data.xlsx.xlsx", sheet_name='Data')
raw
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 4607 | INDORES13DEL02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | Snack | motorcycle | 24 |
| 1 | B379 | BANGRES18DEL02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | Snack | scooter | 33 |
| 2 | 5D6D | BANGRES19DEL01 | 23 | 4.4 | 12.914264 | 77.678400 | 12.924264 | 77.688400 | Drinks | motorcycle | 26 |
| 3 | 7A6A | COIMBRES13DEL02 | 38 | 4.7 | 11.003669 | 76.976494 | 11.053669 | 77.026494 | Buffet | motorcycle | 21 |
| 4 | 70A2 | CHENRES12DEL01 | 32 | 4.6 | 12.972793 | 80.249982 | 13.012793 | 80.289982 | Snack | scooter | 30 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 45588 | 7C09 | JAPRES04DEL01 | 30 | 4.8 | 26.902328 | 75.794257 | 26.912328 | 75.804257 | Meal | motorcycle | 32 |
| 45589 | D641 | AGRRES16DEL01 | 21 | 4.6 | 0.000000 | 0.000000 | 0.070000 | 0.070000 | Buffet | motorcycle | 36 |
| 45590 | 4F8D | CHENRES08DEL03 | 30 | 4.9 | 13.022394 | 80.242439 | 13.052394 | 80.272439 | Drinks | scooter | 16 |
| 45591 | 5EEE | COIMBRES11DEL01 | 20 | 4.7 | 11.001753 | 76.986241 | 11.041753 | 77.026241 | Snack | motorcycle | 26 |
| 45592 | 5FB2 | RANCHIRES09DEL02 | 23 | 4.9 | 23.351058 | 85.325731 | 23.431058 | 85.405731 | Snack | scooter | 36 |
45593 rows × 11 columns
raw.shape
(45593, 11)
print("First five rows of Dataset:")
display(raw.head())
print("Last five rows of Dataset:")
raw.tail()
First five rows of Dataset:
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 4607 | INDORES13DEL02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | Snack | motorcycle | 24 |
| 1 | B379 | BANGRES18DEL02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | Snack | scooter | 33 |
| 2 | 5D6D | BANGRES19DEL01 | 23 | 4.4 | 12.914264 | 77.678400 | 12.924264 | 77.688400 | Drinks | motorcycle | 26 |
| 3 | 7A6A | COIMBRES13DEL02 | 38 | 4.7 | 11.003669 | 76.976494 | 11.053669 | 77.026494 | Buffet | motorcycle | 21 |
| 4 | 70A2 | CHENRES12DEL01 | 32 | 4.6 | 12.972793 | 80.249982 | 13.012793 | 80.289982 | Snack | scooter | 30 |
Last five rows of Dataset:
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 45588 | 7C09 | JAPRES04DEL01 | 30 | 4.8 | 26.902328 | 75.794257 | 26.912328 | 75.804257 | Meal | motorcycle | 32 |
| 45589 | D641 | AGRRES16DEL01 | 21 | 4.6 | 0.000000 | 0.000000 | 0.070000 | 0.070000 | Buffet | motorcycle | 36 |
| 45590 | 4F8D | CHENRES08DEL03 | 30 | 4.9 | 13.022394 | 80.242439 | 13.052394 | 80.272439 | Drinks | scooter | 16 |
| 45591 | 5EEE | COIMBRES11DEL01 | 20 | 4.7 | 11.001753 | 76.986241 | 11.041753 | 77.026241 | Snack | motorcycle | 26 |
| 45592 | 5FB2 | RANCHIRES09DEL02 | 23 | 4.9 | 23.351058 | 85.325731 | 23.431058 | 85.405731 | Snack | scooter | 36 |
print("Column data Check (Null Values & Data Types):")
print()
raw.info()
Column data Check (Null Values & Data Types): <class 'pandas.core.frame.DataFrame'> RangeIndex: 45593 entries, 0 to 45592 Data columns (total 11 columns): # Column Non-Null Count Dtype --- ------ -------------- ----- 0 ID 45593 non-null object 1 Delivery_person_ID 45593 non-null object 2 Delivery_person_Age 45593 non-null int64 3 Delivery_person_Ratings 45593 non-null float64 4 Restaurant_latitude 45593 non-null float64 5 Restaurant_longitude 45593 non-null float64 6 Delivery_location_latitude 45593 non-null float64 7 Delivery_location_longitude 45593 non-null float64 8 Type_of_order 45593 non-null object 9 Type_of_vehicle 45593 non-null object 10 Time_taken(min) 45593 non-null int64 dtypes: float64(5), int64(2), object(4) memory usage: 3.8+ MB
print("Missing Values Count of Each Column:")
print()
raw.isnull().sum()
Missing Values Count of Each Column:
ID 0 Delivery_person_ID 0 Delivery_person_Age 0 Delivery_person_Ratings 0 Restaurant_latitude 0 Restaurant_longitude 0 Delivery_location_latitude 0 Delivery_location_longitude 0 Type_of_order 0 Type_of_vehicle 0 Time_taken(min) 0 dtype: int64
# As python is case sensitive , converting object data type columns into lower cases
for col in raw.columns:
if raw[col].dtype=='object':
raw[col] = raw[col].str.lower()
raw.head(2)
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 24 |
| 1 | b379 | bangres18del02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 33 |
# Duplicated rows check
raw[raw.duplicated()]
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 19714 | NaN | coimbres16del02 | 29 | 4.6 | 11.010375 | 76.95295 | 11.060375 | 77.00295 | buffet | motorcycle | 25 |
# Droping Duplicated rows
raw = raw.drop_duplicates().reset_index(drop=True)
raw.shape
(45592, 11)
raw[raw.duplicated()]
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) |
|---|
ID
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.ID.nunique())
print()
print("Unique Classes:")
raw.ID.unique()
Number of Unique Classes in Column: 36370 Unique Classes:
array([nan, 'b379', '5d6d', ..., '4f8d', '5eee', '5fb2'], dtype=object)
raw.ID.unique()
array([nan, 'b379', '5d6d', ..., '4f8d', '5eee', '5fb2'], dtype=object)
Delivery_person_ID
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Delivery_person_ID.nunique())
print()
print("Unique Classes:")
raw.Delivery_person_ID.unique()
Number of Unique Classes in Column: 1320 Unique Classes:
array(['indores13del02', 'bangres18del02', 'bangres19del01', ...,
'kocres04del01', 'bhpres06del03', 'goares03del03'], dtype=object)
raw.Delivery_person_ID.head()
0 indores13del02 1 bangres18del02 2 bangres19del01 3 coimbres13del02 4 chenres12del01 Name: Delivery_person_ID, dtype: object
Feature Engineering Step
raw.head(2)
Delivery_person_Age
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Delivery_person_Age.nunique())
print()
print("Unique Classes:")
raw.Delivery_person_Age.unique()
Number of Unique Classes in Column: 22 Unique Classes:
array([37, 34, 23, 38, 32, 22, 33, 35, 36, 21, 24, 29, 25, 31, 27, 26, 20,
28, 39, 30, 15, 50], dtype=int64)
Delivery_person_Ratings
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Delivery_person_Ratings.nunique())
print()
print("Unique Classes:")
raw.Delivery_person_Ratings.unique()
Number of Unique Classes in Column: 28 Unique Classes:
array([4.9, 4.5, 4.4, 4.7, 4.6, 4.8, 4.2, 4.3, 4. , 4.1, 5. , 3.5, 3.8,
3.9, 3.7, 2.6, 2.5, 3.6, 3.1, 2.7, 1. , 3.2, 3.3, 6. , 3.4, 2.8,
2.9, 3. ])
Restaurant_latitude
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Restaurant_latitude.nunique())
print()
print("Unique Classes:")
raw.Restaurant_latitude.unique()
Number of Unique Classes in Column: 657 Unique Classes:
array([ 22.745049, 12.913041, 12.914264, 11.003669, 12.972793,
17.431668, 23.369746, 12.352058, 17.433809, 30.327968,
10.003064, 18.56245 , 30.899584, 26.463504, 19.176269,
12.311072, 18.592718, 17.426228, 22.552672, 18.563934,
23.357804, 12.986047, 19.221315, 13.005801, 26.849596,
21.160522, 12.934179, 18.51421 , 11.022477, 21.160437,
15.51315 , 15.561295, 0. , 18.55144 , 18.593481,
21.173343, 17.451976, 12.972532, 13.064181, 19.121999,
21.149569, 19.091458, 22.539129, 12.970324, 21.175975,
11.003681, 10.96185 , 27.165108, 26.88842 , 26.913987,
12.3085 , 21.183434, 19.254567, 25.449659, 30.372202,
21.157735, 21.186438, 12.935662, 17.431477, 12.933298,
22.311358, 12.934365, 13.086438, 26.913483, 17.411028,
18.516216, 15.5696 , 19.876428, 12.939496, 23.374878,
-27.163303, 22.74806 , 26.891191, 12.316967, 18.927584,
11.022298, 12.325461, 18.530963, 17.458998, 19.1813 ,
22.727021, 12.979166, 18.994237, 12.284747, 11.000762,
26.479108, 21.175104, 12.975377, 23.359194, 12.297954,
23.359407, 23.416792, 26.892312, 22.31279 , 22.761593,
11.026117, 26.483042, 23.359033, 22.569358, 21.157729,
22.311603, 18.536562, 22.745536, 18.543626, 17.41233 ,
21.17106 , 21.186884, 19.065838, 12.98041 , 12.310972,
11.025083, 22.538731, 11.001753, 22.310237, 22.725748,
17.450851, 13.081878, 10.035573, 22.308096, 12.975996,
19.178321, 26.910262, 25.443994, 12.321214, 19.055831,
12.337928, 23.351489, 22.728163, 13.026286, 26.766536,
21.149834, 21.149669, 26.482581, 26.911378, 13.02978 ,
12.323194, 22.569367, 12.949934, 22.725835, 30.89286 ,
12.933284, 17.429585, 12.978453, 13.044694, 26.846156,
26.911927, 10.020683, 15.585658, 22.310526, 19.103249,
26.471617, 19.866969, 12.906229, 22.751857, 11.010375,
17.483216, 27.160934, 11.006686, 25.457687, 19.12663 ,
19.875016, 18.536718, 13.026279, 17.455894, 13.054347,
12.979096, 27.163303, 26.482419, 22.307898, 27.160832,
10.027014, 30.890184, 21.15276 , 22.753839, 19.876106,
30.328174, 13.058616, -27.165108, 21.170096, 30.905562,
-18.55144 , 26.902328, 26.90519 , 17.428294, 12.323978,
26.492106, 19.003517, 10.994136, 23.353783, 17.440827,
12.304569, 12.299524, 19.131141, 19.879631, 18.520016,
21.170798, 22.760072, 22.761226, 23.354422, 22.722634,
12.972161, 22.526461, 23.371292, 13.029198, 18.546258,
26.921411, 11.008638, 13.049645, 17.430448, 19.874733,
13.045479, 26.956431, 13.022394, 22.75004 , 21.173493,
13.091809, 18.533811, 15.496162, 26.913726, 30.895817,
-30.366322, 12.323994, 19.120083, 12.337978, 27.161661,
13.066762, 30.362686, 17.410371, 9.979186, 18.539299,
22.310329, 11.022169, 19.875908, 10.006881, 12.326356,
19.875522, 22.552996, 30.895204, 25.450329, 18.546947,
30.340722, 22.651847, 25.45235 , 17.424114, 12.323225,
-12.325461, 26.905287, 17.422819, 17.45971 , 22.695207,
18.569156, 11.003008, 26.914142, 30.359722, 12.334022,
23.214294, -12.316967, 12.970221, 22.753659, 18.636215,
22.751234, 23.234249, 25.457116, 22.744648, 23.39925 ,
19.874103, 22.577821, 22.514119, 22.311844, 18.994049,
22.732225, 30.914057, 23.233219, 12.981615, 23.184992,
26.49095 , 22.551084, 11.021278, 30.899992, 11.024839,
23.351058, 19.876219, 19.880256, 13.027018, 30.893234,
30.319528, 27.195928, -23.359194, 25.450317, 21.185047,
23.355164, 23.232537, 18.53408 , 26.902908, 11.016298,
10.000706, 25.454697, 21.186608, 26.90294 , 23.214459,
23.374989, 30.893244, 30.885915, 17.438263, 15.544419,
26.474986, 9.970717, 30.873988, 19.888716, 22.547186,
23.232357, 23.234631, 19.1093 , 22.32 , -26.47775 ,
26.469003, 26.483672, 10.027364, -15.546594, 19.207222,
19.874449, -12.337978, 11.02091 , 19.22384 , 30.366322,
30.361281, 26.473698, 18.554382, 22.553227, -27.160934,
30.332735, 9.982834, 15.498603, 22.5491 , 25.450377,
26.471529, -26.90519 , 23.218998, 23.235123, 22.533662,
30.885814, -17.45971 , 15.574828, 25.459775, 30.893081,
22.514688, -26.914142, 23.266261, 23.333017, -19.176269,
27.157772, 15.516833, 22.527893, 27.159795, 15.546594,
15.157944, 27.16185 , 30.88722 , 27.158822, -23.230791,
23.264015, 27.161694, 9.991703, 27.201725, 9.960846,
26.481547, -22.539129, 15.303897, 9.988483, 25.454648,
30.342509, -15.157944, 22.53796 , -9.959778, 30.346994,
-15.51315 , 15.49395 , -27.16185 , 11.001852, 30.893384,
-15.576683, 19.875337, -18.520016, 15.556561, 23.230791,
-26.891191, 15.56155 , 30.335259, -22.538999, 26.47775 ,
-19.103249, -30.902872, 9.985497, 25.451517, -22.526461,
26.472001, 9.959778, -9.988483, -23.211529, 30.892978,
15.506205, 19.878028, -30.895817, -26.474986, 22.538999,
9.957144, 22.515082, 25.451646, -15.5696 , -12.311072,
-26.913987, -12.970324, 9.979363, 10.028047, -21.157735,
-23.374989, -13.049645, 26.474133, 30.902872, 9.985697,
-26.913726, 23.211529, 19.876994, -22.310329, -23.234249,
15.576683, 22.514585, 25.449872, 25.453436, 9.966783,
-25.45235 , -17.451976, -21.186884, -26.472001, -26.910262,
-11.003681, -11.003669, -13.054347, -30.372202, -12.972793,
-25.449872, -18.569156, -18.546258, -17.429585, -27.159795,
-22.553227, -22.761593, -9.966783, -13.086438, -19.878028,
-17.440827, -9.970717, -12.913041, -12.970221, -19.876994,
-19.875522, -25.449659, -30.346994, -22.552672, -22.311603,
-12.352058, -25.450317, -21.15276 , -12.949934, -26.49095 ,
-25.443994, -30.319528, -10.028047, -12.323978, -19.876106,
26.47 , -18.53408 , -26.463504, -30.899584, -22.311844,
-17.438263, -23.39925 , -23.234631, -30.361281, -19.091458,
-17.483216, -15.496162, -22.725835, -30.885915, -22.53796 ,
-12.972161, -23.184992, -17.424114, -10.035573, -19.22384 ,
-23.235123, -25.453436, -23.359033, -19.221315, -23.214459,
-21.173343, -26.483042, -21.183434, -22.310526, -22.74806 ,
-12.304569, -19.1093 , -19.879631, -19.874449, -10.020683,
-19.875337, -26.911927, -23.416792, -21.186608, -12.323994,
-12.933284, -17.450851, -19.875016, -22.569358, -12.284747,
-23.355164, -18.592718, -27.201725, -22.311358, -19.207222,
-13.022394, -21.149569, -22.538731, -27.161661, -27.160832,
-13.066762, -10.96185 , -12.935662, -17.428294, -30.359722,
-11.022169, -30.885814, -25.451517, -22.651847, -22.547186,
-26.474133, -30.893384, -22.761226, -11.001852, -30.327968,
-22.745536, -17.455894, -26.481547, -22.32 , -23.371292,
-18.563934, -30.905562, -25.450377, -22.515082, -22.725748,
-23.351058, -26.473698, -23.333017, -30.873988, -9.982834,
-22.514119, -21.170798, -12.979166, -19.065838, -19.876428,
-13.02978 , -12.310972, -22.307898, -21.170096, -21.186438,
-9.960846, -10.994136, -21.175104, -15.303897, -11.022477,
-26.846156, -25.457116, -26.905287, -21.149834, -30.328174,
-30.362686, -19.055831, -22.5491 , -26.471529, -12.934365,
-30.893244, -19.888716, -12.975377, -22.551084, -15.561295,
-22.695207, -26.956431, -9.979186, -11.006686, -12.323225,
-13.026286, -25.454697, -23.357804, -19.880256, -13.081878,
-10.027014, -18.543626, -10.003064, -22.552996, -18.530963,
-19.866969, -22.75004 , -26.469003, -26.766536, -12.326356,
-22.577821, -22.569367, -23.232357, -13.091809, -12.933298,
-22.533662, -22.745049, -26.921411, -23.374878, -27.158822,
-12.906229, -13.044694, -13.045479, -12.98041 , -26.90294 ,
-23.369746, -19.875908, -26.479108, -30.892978, -23.232537,
-22.514585, -22.751234, -17.426228, -17.411028, -18.636215,
-15.56155 , -19.254567, -25.457687, -15.506205, -15.516833,
-11.02091 , -12.3085 , -26.47 , -19.003517, -30.890184,
-22.760072, -22.722634, -19.12663 , -22.753839, -21.173493,
-17.430448, -12.939496, -18.56245 , -22.308096, -23.264015,
-26.482581, -15.498603, -18.51421 , -12.975996, -19.874733,
-15.49395 , -12.978453])
Restaurant_longitude
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Restaurant_longitude.nunique())
print()
print("Unique Classes:")
raw.Restaurant_longitude.unique()
Number of Unique Classes in Column: 518 Unique Classes:
array([ 75.892471, 77.683237, 77.6784 , 76.976494, 80.249982,
78.408321, 85.33982 , 76.60665 , 78.386744, 78.046106,
76.307589, 73.916619, 75.809346, 80.372929, 72.836721,
76.654878, 73.773572, 78.407495, 88.352885, 73.915367,
85.325146, 80.218114, 72.862381, 80.250744, 75.800512,
72.771477, 77.615797, 73.838429, 76.995667, 72.774209,
73.78346 , 73.749478, 0. , 73.804855, 73.785901,
72.792731, 78.385883, 77.608179, 80.236442, 72.908493,
72.772697, 72.827808, 88.365507, 77.645748, 72.795503,
76.975525, 76.971082, 78.015053, 75.800689, 75.752891,
76.665808, 72.814492, 72.848923, 81.839744, 78.077151,
72.768778, 72.794115, 77.61413 , 78.40035 , 77.614293,
73.164798, 77.616155, 80.220672, 75.803139, 78.329645,
73.842527, 73.742294, 75.364792, 77.625999, 85.335739,
78.057044, 75.8934 , 75.802083, 76.603067, 72.832585,
76.998349, 76.632278, 73.828972, 78.500366, 72.836191,
75.884167, 77.640709, 72.825553, 76.625861, 76.981876,
80.315042, 72.804342, 77.696664, 85.325447, 76.665169,
85.325055, 85.316842, 75.806896, 73.170283, 75.886362,
76.944652, 80.317833, 85.325347, 88.433452, 72.768726,
73.165012, 73.896485, 75.893106, 73.905101, 78.449654,
72.789292, 72.793616, 72.832658, 77.640489, 76.659264,
77.015393, 88.364878, 76.986241, 73.158921, 75.898497,
78.379347, 80.248519, 76.336958, 73.167753, 80.221898,
72.834715, 75.783013, 81.860187, 76.621094, 72.833984,
76.617889, 85.324253, 75.884212, 80.275235, 75.837333,
72.778666, 72.772629, 80.315628, 75.789034, 80.208812,
76.630583, 88.433187, 77.699386, 75.887648, 75.822199,
77.615428, 78.392621, 77.643685, 80.26147 , 75.8023 ,
75.797282, 76.310631, 73.743606, 73.170937, 72.846749,
80.313564, 75.318894, 77.596791, 75.866699, 76.95295 ,
78.552111, 78.044095, 76.951736, 81.835585, 72.829976,
75.322405, 73.830327, 80.174568, 78.375467, 80.257221,
77.640625, 80.320939, 73.167788, 78.011608, 76.308053,
75.829615, 72.778059, 75.897429, 75.340775, 78.049117,
80.264151, 72.789122, 75.832841, -73.804855, 75.794257,
75.810753, 78.404423, 76.627961, 80.327797, 72.82765 ,
76.963303, 85.326967, 78.393391, 76.643622, 76.64262 ,
72.813074, 75.323403, 73.830547, 72.790489, 75.892574,
75.887522, 85.3329 , 75.886959, 77.596014, 88.364453,
85.327872, 77.570997, 73.904337, 75.793604, 76.984311,
80.242268, 78.418213, 75.353942, 80.23311 , 75.776649,
80.242439, 75.902847, 72.801953, 80.219104, 73.899315,
73.825364, 75.75282 , 75.813112, -78.070453, 76.626167,
72.907385, 76.616792, 78.011544, 80.251865, 78.06889 ,
78.437225, 76.317361, 73.897902, 73.169083, 76.999594,
75.358888, 76.345397, 76.619103, 75.367127, 88.35231 ,
75.822103, 81.834279, 73.900626, 78.060221, 75.881991,
81.841889, 78.347554, 76.630028, -76.632278, 75.794592,
78.449578, 78.368855, 75.866059, 73.774723, 76.97544 ,
75.805704, 78.067079, 76.618203, 77.435361, 77.645396,
75.903365, 73.751081, 75.88949 , 77.434007, 81.859682,
75.894377, 85.390464, 75.368419, 88.400581, 88.362504,
73.165081, 72.825203, 75.874765, 75.83982 , 77.433571,
80.231598, 77.417227, 80.318656, 88.354127, 76.995017,
75.831338, 77.007003, 85.325731, 75.346017, 75.323503,
80.254791, 75.82172 , 78.040267, 77.998092, -85.325447,
81.831681, 72.80859 , 85.324097, 77.429845, 73.89852 ,
75.792934, 76.972076, 76.349516, 81.834492, 72.794136,
75.793007, 77.434976, 85.335486, 75.821817, 75.788259,
78.397865, 73.755736, 80.342796, 76.285447, 75.842739,
75.321461, 88.35068 , 77.429989, 77.401663, 72.825451,
73.17 , -80.351569, 80.316344, 80.320708, 76.308258,
73.760431, 72.972281, 75.360232, 76.940432, 72.841347,
78.070453, 78.068022, 80.352677, 73.798206, 88.353273,
-78.044095, 78.054222, 76.283268, 73.826911, 88.400467,
81.834236, 80.313458, -75.810753, 77.373573, 77.398886,
88.366217, 75.786976, 73.766883, 81.834841, 75.821495,
88.393294, 77.379605, 85.3172 , -72.836721, 78.04725 ,
73.768172, 88.368628, 78.04299 , 73.950889, 78.040165,
75.804893, 78.045359, 77.43702 , 77.408236, 78.034714,
76.293136, 78.007553, 76.293936, 80.299775, 73.914336,
76.295211, 81.834502, 78.061187, 88.349843, 76.296106,
78.062543, 73.827423, -78.040165, 76.976268, 75.821202,
73.75575 , 75.316722, -73.830547, 73.763633, 73.749092,
78.053162, -88.322337, 80.351569, -72.846749, 75.826808,
76.276999, 81.832616, 80.354002, 77.419399, 75.821847,
73.766668, 75.317475, 88.322337, 76.296783, 88.36783 ,
81.832796, -76.654878, -77.645748, 76.285001, 76.310019,
-80.242268, 80.3481 , 76.281128, 75.372353, -73.169083,
-77.434007, 88.39331 , 81.836167, 81.833167, 76.242981,
-81.841889, -78.385883, -75.783013, -76.975525, -76.976494,
-80.257221, -78.077151, -73.904337, -78.392621, -78.04299 ,
-75.367127, -78.062543, -88.352885, -76.60665 , -77.699386,
-81.860187, 80.35 , -73.165081, -78.397865, -72.827808,
-75.887648, -85.335486, -77.596014, -78.347554, -72.841347,
-72.862381, -72.792731, -72.814492, -76.643622, -85.316842,
-76.626167, -77.615428, -78.379347, -76.625861, -73.164798,
-72.972281, -77.683237, -78.011544, -80.251865, -77.61413 ,
-88.349843, -76.999594, -75.881991, -75.821202, -75.887522,
-76.976268, -78.375467, -73.17 , -75.832841, -81.834236,
-85.325731, -85.3172 , -76.283268, -77.640709, -78.068022,
-80.208812, -72.789122, -75.340775, -72.804342, -76.995667,
-81.859682, -75.794592, -78.06889 , -76.963303, -77.616155,
-77.696664, -75.866059, -76.951736, -76.630028, -85.325146,
-73.828972, -75.902847, -80.316344, -76.619103, -80.242439,
-76.293936, -77.614293, -88.366217, -75.837333, -75.892471,
-75.793604, -80.248519, -78.045359, -77.596791, -80.26147 ,
-80.23311 , -77.640489, -80.220672, -75.793007, -85.33982 ,
-78.407495, -73.773572, -76.603067, -73.751081, -76.971082,
-75.75282 , -78.404423, -76.940432, -76.665808, -73.742294,
-77.43702 , -75.829615, -72.772697, -75.897429, -80.318656,
-72.801953, -72.832658, -73.916619, -77.408236, -73.838429,
-72.778059, -73.827423, -77.643685])
Delivery_location_latitude
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw. Delivery_location_latitude.nunique())
print()
print("Unique Classes:")
raw. Delivery_location_latitude.unique()
Number of Unique Classes in Column: 4373 Unique Classes:
array([22.765049, 13.043041, 12.924264, ..., 30.982872, 15.636205,
20.005337])
Delivery_location_longitude
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Delivery_location_longitude.nunique())
print()
print("Unique Classes:")
raw.Delivery_location_longitude.unique()
Number of Unique Classes in Column: 4373 Unique Classes:
array([75.912471, 77.813237, 77.6884 , ..., 75.906808, 73.896668,
75.446722])
Type_of_order
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Type_of_order.nunique())
print()
print("Unique Classes:")
raw.Type_of_order.unique()
Number of Unique Classes in Column: 4 Unique Classes:
array(['snack ', 'drinks ', 'buffet ', 'meal '], dtype=object)
Type_of_vehicle
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw.Type_of_vehicle.nunique())
print()
print("Unique Classes:")
raw.Type_of_vehicle.unique()
Number of Unique Classes in Column: 4 Unique Classes:
array(['motorcycle ', 'scooter ', 'electric_scooter ', 'bicycle '],
dtype=object)
Time_taken(min)
# Checking number of unique values & unique values in col data
print("Number of Unique Classes in Column:", raw['Time_taken(min)'].nunique())
print()
print("Unique Classes:")
raw['Time_taken(min)'].unique()
Number of Unique Classes in Column: 45 Unique Classes:
array([24, 33, 26, 21, 30, 40, 32, 34, 46, 23, 20, 41, 15, 36, 39, 18, 38,
47, 12, 22, 25, 35, 10, 19, 11, 28, 52, 16, 27, 49, 17, 14, 37, 44,
42, 31, 13, 29, 50, 43, 48, 54, 53, 45, 51], dtype=int64)
Final Validated Data
raw.head(2)
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 24 |
| 1 | b379 | bangres18del02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 33 |
# Taking copy of raw data
data = raw.copy()
data.head(2)
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 24 |
| 1 | b379 | bangres18del02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 33 |
2.1 Uni-Variate Analysis
pip install simple_colors
Requirement already satisfied: simple_colors in c:\users\vinit\anaconda3\lib\site-packages (0.1.5) Note: you may need to restart the kernel to use updated packages.
# Viz Libraries
import matplotlib.pyplot as plt
import seaborn as sns
import plotly.express as px
import warnings
warnings.filterwarnings("ignore")
from eda import uni_variate_analysis
uni_variate_analysis(raw)
Column Name: ID ============================================================ ***************************************** Descriptive Stats ***************************************** Classes: [nan 'b379' '5d6d' ... '4f8d' '5eee' '5fb2'] Number of Classes: 36370 Value Counts of each class: ID bbd 8.00 2 afa 2.00 2 bef 1.00 2 cdf 5.00 2 bec 8.00 2 .. 44d7 1 5ad3 1 358b 1 621d 1 5fb2 1 Name: count, Length: 36370, dtype: int64 Each Class percentage: ID bbd 8.00 0.0 afa 2.00 0.0 bef 1.00 0.0 cdf 5.00 0.0 bec 8.00 0.0 ... 44d7 0.0 5ad3 0.0 358b 0.0 621d 0.0 5fb2 0.0 Name: count, Length: 36370, dtype: float64 Mode value: aed 1.00 ***************************************** Visual Analysis - Pie Charts ***************************************** ?????? Too many classes to Show ???????????????? Column Name: Delivery_person_ID ============================================================ ***************************************** Descriptive Stats ***************************************** Classes: ['indores13del02' 'bangres18del02' 'bangres19del01' ... 'kocres04del01' 'bhpres06del03' 'goares03del03'] Number of Classes: 1320 Value Counts of each class: Delivery_person_ID puneres01del01 67 japres11del02 67 hydres04del02 66 japres03del01 66 vadres11del02 66 .. dehres18del03 7 aurgres11del03 7 kolres09del03 6 kocres16del03 6 bhpres010del03 5 Name: count, Length: 1320, dtype: int64 Each Class percentage: Delivery_person_ID puneres01del01 0.15 japres11del02 0.15 hydres04del02 0.14 japres03del01 0.14 vadres11del02 0.14 ... dehres18del03 0.02 aurgres11del03 0.02 kolres09del03 0.01 kocres16del03 0.01 bhpres010del03 0.01 Name: count, Length: 1320, dtype: float64 Mode value: japres11del02 ***************************************** Visual Analysis - Pie Charts ***************************************** ?????? Too many classes to Show ???????????????? Column Name: Delivery_person_Age ============================================================ ***************************************** Descriptive Stats ***************************************** Mean: 29.54 Median: 29.0 Mode of the Delivery_person_Age Col: 29 Min & Max: (15, 50) Standard Deviation: 5.7 Skewness: 0.03 Kurtosis: -0.98 ******************************************************** Visual Analysis - Distplot (Histogram + Desnsity plot) ********************************************************
Column Name: Delivery_person_Ratings ============================================================ ***************************************** Descriptive Stats ***************************************** Mean: 4.63 Median: 4.7 Mode of the Delivery_person_Ratings Col: 4.6 Min & Max: (1.0, 6.0) Standard Deviation: 0.33 Skewness: -2.53 Kurtosis: 16.43 ******************************************************** Visual Analysis - Distplot (Histogram + Desnsity plot) ********************************************************
Column Name: Restaurant_latitude ============================================================ ***************************************** Descriptive Stats ***************************************** Mean: 17.02 Median: 18.5491935 Mode of the Restaurant_latitude Col: 0.0 Min & Max: (-30.905562, 30.914057) Standard Deviation: 8.19 Skewness: -1.36 Kurtosis: 3.71 ******************************************************** Visual Analysis - Distplot (Histogram + Desnsity plot) ********************************************************
Column Name: Restaurant_longitude ============================================================ ***************************************** Descriptive Stats ***************************************** Mean: 70.23 Median: 75.898497 Mode of the Restaurant_longitude Col: 0.0 Min & Max: (-88.366217, 88.433452) Standard Deviation: 22.88 Skewness: -3.22 Kurtosis: 10.3 ******************************************************** Visual Analysis - Distplot (Histogram + Desnsity plot) ********************************************************
Column Name: Delivery_location_latitude ============================================================ ***************************************** Descriptive Stats ***************************************** Mean: 17.47 Median: 18.633934 Mode of the Delivery_location_latitude Col: 0.13 Min & Max: (0.01, 31.054057) Standard Deviation: 7.34 Skewness: -0.7 Kurtosis: 0.26 ******************************************************** Visual Analysis - Distplot (Histogram + Desnsity plot) ********************************************************
Column Name: Delivery_location_longitude ============================================================ ***************************************** Descriptive Stats ***************************************** Mean: 70.85 Median: 76.002574 Mode of the Delivery_location_longitude Col: 0.13 Min & Max: (0.01, 88.563452) Standard Deviation: 21.12 Skewness: -2.96 Kurtosis: 7.1 ******************************************************** Visual Analysis - Distplot (Histogram + Desnsity plot) ********************************************************
Column Name: Type_of_order ============================================================ ***************************************** Descriptive Stats ***************************************** Classes: ['snack ' 'drinks ' 'buffet ' 'meal '] Number of Classes: 4 Value Counts of each class: Type_of_order snack 11533 meal 11458 drinks 11322 buffet 11279 Name: count, dtype: int64 Each Class percentage: Type_of_order snack 25.30 meal 25.13 drinks 24.83 buffet 24.74 Name: count, dtype: float64 Mode value: snack ***************************************** Visual Analysis - Pie Charts *****************************************
Column Name: Type_of_vehicle ============================================================ ***************************************** Descriptive Stats ***************************************** Classes: ['motorcycle ' 'scooter ' 'electric_scooter ' 'bicycle '] Number of Classes: 4 Value Counts of each class: Type_of_vehicle motorcycle 26434 scooter 15276 electric_scooter 3814 bicycle 68 Name: count, dtype: int64 Each Class percentage: Type_of_vehicle motorcycle 57.98 scooter 33.51 electric_scooter 8.37 bicycle 0.15 Name: count, dtype: float64 Mode value: motorcycle ***************************************** Visual Analysis - Pie Charts *****************************************
Column Name: Time_taken(min) ============================================================ ***************************************** Descriptive Stats ***************************************** Mean: 26.29 Median: 26.0 Mode of the Time_taken(min) Col: 26 Min & Max: (10, 54) Standard Deviation: 9.38 Skewness: 0.49 Kurtosis: -0.31 ******************************************************** Visual Analysis - Distplot (Histogram + Desnsity plot) ********************************************************
Insights:
Further Business Queries:
2.2 Bi-Variate Analysis
data.head(2)
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 24 |
| 1 | b379 | bangres18del02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 33 |
data[['Delivery_person_Age','Time_taken(min)']].corr()
| Delivery_person_Age | Time_taken(min) | |
|---|---|---|
| Delivery_person_Age | 1.000000 | 0.292708 |
| Time_taken(min) | 0.292708 | 1.000000 |
px.scatter(data, x='Delivery_person_Age', y="Time_taken(min)", width=650, height=350)
# Descriptive Stats - Correlations
data[['Restaurant_latitude','Delivery_location_latitude']].corr()
| Restaurant_latitude | Delivery_location_latitude | |
|---|---|---|
| Restaurant_latitude | 1.000000 | 0.866376 |
| Delivery_location_latitude | 0.866376 | 1.000000 |
# Visual Analysis
px.scatter(data, x='Restaurant_latitude', y="Delivery_location_latitude", width=650, height=350)
data.corr(numeric_only=True)
| Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Time_taken(min) | |
|---|---|---|---|---|---|---|---|
| Delivery_person_Age | 1.000000 | -0.067449 | -0.001956 | -0.006795 | 0.002358 | -0.000592 | 0.292708 |
| Delivery_person_Ratings | -0.067449 | 1.000000 | -0.004848 | -0.011146 | -0.010200 | -0.013349 | -0.331103 |
| Restaurant_latitude | -0.001956 | -0.004848 | 1.000000 | 0.661794 | 0.866376 | 0.602722 | 0.013978 |
| Restaurant_longitude | -0.006795 | -0.011146 | 0.661794 | 1.000000 | 0.632305 | 0.915026 | 0.007822 |
| Delivery_location_latitude | 0.002358 | -0.010200 | 0.866376 | 0.632305 | 1.000000 | 0.690527 | 0.014240 |
| Delivery_location_longitude | -0.000592 | -0.013349 | 0.602722 | 0.915026 | 0.690527 | 1.000000 | 0.007626 |
| Time_taken(min) | 0.292708 | -0.331103 | 0.013978 | 0.007822 | 0.014240 | 0.007626 | 1.000000 |
data.head(2)
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 24 |
| 1 | b379 | bangres18del02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 33 |
data.groupby('Type_of_order')['Time_taken(min)'].mean()
Type_of_order buffet 26.283624 drinks 26.187953 meal 26.419270 snack 26.286309 Name: Time_taken(min), dtype: float64
px.box(data, y='Type_of_order', x='Time_taken(min)')
data.head(2)
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 24 |
| 1 | b379 | bangres18del02 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 33 |
(data.groupby('Type_of_vehicle')['Time_taken(min)'].mean()).sort_values(ascending=False)
Type_of_vehicle motorcycle 27.605773 bicycle 26.426471 scooter 24.480754 electric_scooter 24.470110 Name: Time_taken(min), dtype: float64
px.box(data, y='Type_of_vehicle', x='Time_taken(min)')
pd.crosstab(data.Type_of_vehicle, data.Type_of_order, margins=True)
| Type_of_order | buffet | drinks | meal | snack | All |
|---|---|---|---|---|---|
| Type_of_vehicle | |||||
| bicycle | 15 | 16 | 23 | 14 | 68 |
| electric_scooter | 943 | 949 | 948 | 974 | 3814 |
| motorcycle | 6594 | 6532 | 6657 | 6651 | 26434 |
| scooter | 3727 | 3825 | 3830 | 3894 | 15276 |
| All | 11279 | 11322 | 11458 | 11533 | 45592 |
# Checking missing values count for each column
data.isnull().sum()
ID 9184 Delivery_person_ID 0 Delivery_person_Age 0 Delivery_person_Ratings 0 Restaurant_latitude 0 Restaurant_longitude 0 Delivery_location_latitude 0 Delivery_location_longitude 0 Type_of_order 0 Type_of_vehicle 0 Time_taken(min) 0 dtype: int64
numdata = data.select_dtypes(exclude="O")
numdata.head(2)
| Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Time_taken(min) | |
|---|---|---|---|---|---|---|---|
| 0 | 37 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | 24 |
| 1 | 34 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | 33 |
from Outlier import outlier_detect
outlier_detect(data)
Column: Delivery_person_Age ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50] Column: Delivery_person_Ratings ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.5, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.6, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.7, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.8, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 2.9, 3.0, 3.0, 3.0, 3.0, 3.0, 3.0, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.1, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.2, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.3, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.4, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.5, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.6, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.7, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.8, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 3.9, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.0, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.1, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2, 4.2] Upper Outliers: [6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0] Column: Restaurant_latitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [-30.905562, -30.902872, -30.902872, -30.899584, -30.899584, -30.899584, -30.895817, -30.895817, -30.895817, -30.893384, -30.893244, -30.892978, -30.890184, -30.885915, -30.885814, -30.873988, -30.873988, -30.372202, -30.372202, -30.372202, -30.366322, -30.366322, -30.362686, -30.361281, -30.361281, -30.361281, -30.359722, -30.346994, -30.346994, -30.346994, -30.328174, -30.327968, -30.319528, -30.319528, -27.201725, -27.165108, -27.165108, -27.163303, -27.163303, -27.16185, -27.16185, -27.161661, -27.160934, -27.160832, -27.160832, -27.160832, -27.159795, -27.158822, -26.956431, -26.921411, -26.914142, -26.913987, -26.913987, -26.913726, -26.913726, -26.911927, -26.911927, -26.911927, -26.910262, -26.905287, -26.905287, -26.90519, -26.90519, -26.90294, -26.90294, -26.891191, -26.891191, -26.846156, -26.766536, -26.766536, -26.49095, -26.49095, -26.483042, -26.482581, -26.482581, -26.481547, -26.481547, -26.479108, -26.47775, -26.474986, -26.474986, -26.474133, -26.474133, -26.473698, -26.472001, -26.472001, -26.472001, -26.471529, -26.471529, -26.471529, -26.471529, -26.47, -26.469003, -26.463504, -26.463504, -25.457687, -25.457116, -25.454697, -25.453436, -25.453436, -25.45235, -25.451517, -25.450377, -25.450317, -25.449872, -25.449659, -25.443994, -25.443994, -23.416792, -23.39925, -23.374989, -23.374989, -23.374989, -23.374878, -23.371292, -23.371292, -23.369746, -23.359194, -23.359194, -23.359033, -23.359033, -23.357804, -23.355164, -23.351058, -23.351058, -23.351058, -23.333017, -23.264015, -23.235123, -23.235123, -23.234631, -23.234631, -23.234249, -23.234249, -23.234249, -23.232537, -23.232357, -23.230791, -23.230791, -23.214459, -23.211529, -23.184992, -22.761593, -22.761593, -22.761226, -22.760072, -22.753839, -22.751234, -22.75004, -22.74806, -22.745536, -22.745049, -22.725835, -22.725748, -22.725748, -22.722634, -22.695207, -22.651847, -22.651847, -22.577821, -22.569367, -22.569358, -22.553227, -22.553227, -22.552996, -22.552672, -22.552672, -22.551084, -22.5491, -22.547186, -22.547186, -22.539129, -22.539129, -22.538999, -22.538999, -22.538999, -22.538999, -22.538731, -22.538731, -22.538731, -22.538731, -22.53796, -22.53796, -22.533662, -22.526461, -22.526461, -22.526461, -22.515082, -22.515082, -22.514585, -22.514119, -22.514119, -22.32, -22.32, -22.32, -22.311844, -22.311603, -22.311358, -22.310526, -22.310526, -22.310329, -22.310329, -22.308096, -22.307898, -21.186884, -21.186608, -21.186608, -21.186438, -21.183434, -21.175104, -21.175104, -21.173493, -21.173343, -21.170798, -21.170096, -21.170096, -21.157735, -21.157735, -21.15276, -21.15276, -21.149834, -21.149834, -21.149569, -21.149569, -21.149569, -21.149569, -19.888716, -19.880256, -19.879631, -19.878028, -19.876994, -19.876994, -19.876994, -19.876428, -19.876428, -19.876106, -19.876106, -19.876106, -19.875908, -19.875522, -19.875522, -19.875337, -19.875337, -19.875016, -19.874733, -19.874449, -19.866969, -19.254567, -19.22384, -19.221315, -19.221315, -19.207222, -19.207222, -19.176269, -19.176269, -19.12663, -19.1093, -19.1093, -19.103249, -19.103249, -19.103249, -19.103249, -19.103249, -19.091458, -19.091458, -19.065838, -19.065838, -19.065838, -19.065838, -19.055831, -19.003517, -19.003517, -18.636215, -18.592718, -18.592718, -18.569156, -18.569156, -18.563934, -18.563934, -18.56245, -18.55144, -18.546258, -18.543626, -18.53408, -18.530963, -18.520016, -18.520016, -18.51421, -18.51421, -17.483216, -17.45971, -17.45971, -17.455894, -17.455894, -17.451976, -17.450851, -17.450851, -17.440827, -17.438263, -17.430448, -17.429585, -17.429585, -17.428294, -17.428294, -17.426228, -17.424114, -17.411028, -15.576683, -15.576683, -15.5696, -15.5696, -15.5696, -15.5696, -15.5696, -15.56155, -15.561295, -15.546594, -15.546594, -15.546594, -15.516833, -15.51315, -15.506205, -15.498603, -15.496162, -15.49395, -15.303897, -15.157944, -15.157944, -15.157944, -15.157944, -13.091809, -13.086438, -13.086438, -13.086438, -13.081878, -13.081878, -13.066762, -13.066762, -13.066762, -13.066762, -13.054347, -13.054347, -13.054347, -13.049645, -13.049645, -13.045479, -13.044694, -13.02978, -13.02978, -13.026286, -13.022394, -13.022394, -12.98041, -12.979166, -12.978453, -12.975996, -12.975377, -12.975377, -12.972793, -12.972161, -12.972161, -12.970324, -12.970324, -12.970221, -12.949934, -12.949934, -12.939496, -12.935662, -12.935662, -12.934365, -12.934365, -12.933298, -12.933284, -12.913041, -12.913041, -12.906229, -12.352058, -12.352058, -12.337978, -12.326356, -12.325461, -12.323994, -12.323978, -12.323225, -12.316967, -12.316967, -12.311072, -12.311072, -12.311072, -12.310972, -12.310972, -12.3085, -12.304569, -12.284747, -11.022477, -11.022169, -11.02091, -11.006686, -11.006686, -11.003681, -11.003681, -11.003681, -11.003681, -11.003669, -11.001852, -11.001852, -11.001852, -11.001852, -10.994136, -10.994136, -10.96185, -10.96185, -10.035573, -10.028047, -10.027014, -10.027014, -10.020683, -10.003064, -9.988483, -9.982834, -9.982834, -9.982834, -9.982834, -9.979186, -9.970717, -9.970717, -9.966783, -9.960846, -9.960846, -9.959778, -9.959778] Upper Outliers: [] Column: Restaurant_longitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [-88.366217, -88.352885, -88.349843, -88.322337, -85.33982, -85.335486, -85.325731, -85.325731, -85.325731, -85.325447, -85.325447, -85.325146, -85.3172, -85.316842, -81.860187, -81.859682, -81.841889, -81.834236, -80.351569, -80.318656, -80.316344, -80.26147, -80.257221, -80.257221, -80.257221, -80.251865, -80.251865, -80.248519, -80.242439, -80.242268, -80.242268, -80.23311, -80.220672, -80.208812, -80.208812, -78.407495, -78.404423, -78.397865, -78.392621, -78.392621, -78.385883, -78.379347, -78.375467, -78.375467, -78.347554, -78.077151, -78.077151, -78.070453, -78.070453, -78.06889, -78.068022, -78.062543, -78.045359, -78.044095, -78.04299, -78.040165, -78.011544, -77.699386, -77.696664, -77.696664, -77.683237, -77.645748, -77.643685, -77.640709, -77.640489, -77.616155, -77.616155, -77.615428, -77.614293, -77.61413, -77.61413, -77.596791, -77.596014, -77.596014, -77.43702, -77.434007, -77.434007, -77.408236, -76.999594, -76.995667, -76.976494, -76.976268, -76.976268, -76.976268, -76.976268, -76.975525, -76.975525, -76.975525, -76.971082, -76.963303, -76.951736, -76.951736, -76.940432, -76.665808, -76.654878, -76.654878, -76.654878, -76.643622, -76.632278, -76.630028, -76.626167, -76.625861, -76.619103, -76.60665, -76.603067, -76.293936, -76.283268, -75.902847, -75.897429, -75.892471, -75.887648, -75.887522, -75.881991, -75.866059, -75.837333, -75.832841, -75.829615, -75.821202, -75.810753, -75.810753, -75.794592, -75.794592, -75.793604, -75.793007, -75.783013, -75.75282, -75.367127, -75.340775, -73.916619, -73.904337, -73.838429, -73.830547, -73.830547, -73.828972, -73.827423, -73.804855, -73.773572, -73.751081, -73.742294, -73.17, -73.169083, -73.165081, -73.164798, -72.972281, -72.862381, -72.846749, -72.846749, -72.846749, -72.841347, -72.836721, -72.836721, -72.832658, -72.832658, -72.827808, -72.814492, -72.804342, -72.801953, -72.792731, -72.789122, -72.789122, -72.778059, -72.772697, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0] Upper Outliers: [85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 85.390464, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.322337, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.349843, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35068, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.35231, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.352885, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.353273, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.354127, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.362504, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364453, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.364878, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.365507, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.366217, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.36783, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.368628, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.393294, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.39331, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400467, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.400581, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433187, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452, 88.433452] Column: Delivery_location_latitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [] Column: Delivery_location_longitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.01, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.02, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.03, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.04, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.05, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.06, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.07, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.08, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.09, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.11, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13, 0.13] Upper Outliers: [85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.347872, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.34982, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.3529, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354097, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.354253, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355055, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355146, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355347, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355447, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355486, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355731, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.355739, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356842, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.356967, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.3572, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.357872, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.35982, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.3629, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364097, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.364253, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365055, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365146, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365347, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365447, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365486, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365731, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.365739, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366842, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.366967, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.3672, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.367872, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.36982, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.3729, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374097, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.374253, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375055, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375146, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375347, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375447, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375486, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375731, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.375739, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376842, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.376967, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.3772, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.377872, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.37982, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.3829, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384097, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.384253, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385055, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385146, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385347, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385447, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385486, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385731, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.385739, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386842, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.386967, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.3872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.387872, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.38982, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.3929, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394097, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.394253, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395055, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395146, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395347, 85.395447, 85.395447, 85.395447, 85.395447, 85.395447, 85.395447, 85.395447, 85.395447, 85.395447, 85.395447, 85.395447, 85.395486, 85.395486, 85.395486, 85.395486, 85.395486, 85.395486, 85.395486, 85.395486, 85.395486, 85.395486, 85.395486, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395731, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.395739, 85.396842, 85.396842, 85.396842, 85.396842, 85.396842, 85.396842, 85.396842, 85.396842, 85.396842, 85.396842, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.396967, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.3972, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.397872, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.39982, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.400464, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.4029, 85.404097, 85.404097, 85.404097, 85.404097, 85.404097, 85.404097, 85.404097, 85.404097, 85.404097, 85.404097, 85.404097, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.404253, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405055, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405146, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405347, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405447, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405486, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405731, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.405739, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406842, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.406967, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.4072, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.407872, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.40982, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.410464, 85.4129, 85.4129, 85.4129, 85.4129, 85.4129, 85.4129, 85.4129, 85.4129, 85.4129, 85.4129, 85.4129, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414097, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.414253, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415055, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415146, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415347, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415447, 85.415486, 85.415486, 85.415486, 85.415486, 85.415486, 85.415486, 85.415486, 85.415486, 85.415486, 85.415486, 85.415486, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415731, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.415739, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.416967, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.417872, 85.41982, 85.41982, 85.41982, 85.41982, 85.41982, 85.41982, 85.41982, 85.41982, 85.41982, 85.41982, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.420464, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.4229, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425486, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.425739, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.426842, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.4272, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.42982, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.430464, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434097, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.434253, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435055, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435146, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435347, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435447, 85.435731, 85.435731, 85.435731, 85.435731, 85.435731, 85.435731, 85.435731, 85.435731, 85.435731, 85.435731, 85.435731, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.436967, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.437872, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.440464, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.4429, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445486, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.445739, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.446842, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.4472, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.44982, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.450464, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454097, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.454253, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455055, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455146, 85.455347, 85.455347, 85.455347, 85.455347, 85.455347, 85.455347, 85.455347, 85.455347, 85.455347, 85.455347, 85.455347, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455447, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.455731, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.456967, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.457872, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.460464, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.4629, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465486, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.465739, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.46982, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.470464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.480464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.500464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 85.520464, 88.332337, 88.332337, 88.332337, 88.342337, 88.342337, 88.342337, 88.352337, 88.352337, 88.359843, 88.359843, 88.359843, 88.359843, 88.36068, 88.36068, 88.36068, 88.36231, 88.36231, 88.362337, 88.362337, 88.362337, 88.362885, 88.362885, 88.362885, 88.363273, 88.363273, 88.363273, 88.364127, 88.364127, 88.364127, 88.364127, 88.369843, 88.369843, 88.369843, 88.37068, 88.37068, 88.37068, 88.37068, 88.37231, 88.37231, 88.37231, 88.37231, 88.372337, 88.372337, 88.372337, 88.372504, 88.372504, 88.372504, 88.372504, 88.372885, 88.372885, 88.372885, 88.373273, 88.373273, 88.373273, 88.374127, 88.374127, 88.374453, 88.374453, 88.374453, 88.374453, 88.374878, 88.374878, 88.374878, 88.374878, 88.375507, 88.375507, 88.375507, 88.376217, 88.376217, 88.376217, 88.37783, 88.37783, 88.37783, 88.37783, 88.378628, 88.378628, 88.378628, 88.379843, 88.379843, 88.379843, 88.38068, 88.38068, 88.38068, 88.38231, 88.38231, 88.38231, 88.38231, 88.382337, 88.382337, 88.382337, 88.382504, 88.382504, 88.382504, 88.382504, 88.382885, 88.382885, 88.382885, 88.382885, 88.383273, 88.383273, 88.383273, 88.384127, 88.384127, 88.384127, 88.384127, 88.384453, 88.384453, 88.384453, 88.384453, 88.384878, 88.384878, 88.384878, 88.385507, 88.385507, 88.386217, 88.386217, 88.386217, 88.38783, 88.38783, 88.38783, 88.388628, 88.388628, 88.388628, 88.389843, 88.389843, 88.389843, 88.389843, 88.39068, 88.39068, 88.39068, 88.39231, 88.39231, 88.39231, 88.392336, 88.392336, 88.392336, 88.392336, 88.392504, 88.392504, 88.392885, 88.392885, 88.392885, 88.393273, 88.393273, 88.393273, 88.394127, 88.394127, 88.394127, 88.394453, 88.394453, 88.394453, 88.394878, 88.394878, 88.395507, 88.395507, 88.395507, 88.395507, 88.396217, 88.396217, 88.396217, 88.39783, 88.398628, 88.398628, 88.398628, 88.398628, 88.399843, 88.399843, 88.399843, 88.40068, 88.40068, 88.40068, 88.40231, 88.40231, 88.40231, 88.40231, 88.402337, 88.402337, 88.402337, 88.402337, 88.402504, 88.402504, 88.402885, 88.402885, 88.402885, 88.402885, 88.403273, 88.403273, 88.403294, 88.403294, 88.403294, 88.403294, 88.40331, 88.40331, 88.40331, 88.40331, 88.404127, 88.404127, 88.404127, 88.404453, 88.404453, 88.404453, 88.404453, 88.404878, 88.404878, 88.404878, 88.404878, 88.405507, 88.405507, 88.405507, 88.406217, 88.406217, 88.406217, 88.406217, 88.40783, 88.40783, 88.40783, 88.40783, 88.408628, 88.408628, 88.408628, 88.409843, 88.409843, 88.410467, 88.410467, 88.410467, 88.410467, 88.410581, 88.410581, 88.410581, 88.410581, 88.41068, 88.41068, 88.41231, 88.41231, 88.41231, 88.41231, 88.412337, 88.412337, 88.412337, 88.412504, 88.412504, 88.412504, 88.412885, 88.412885, 88.412885, 88.413273, 88.413273, 88.413273, 88.413273, 88.413294, 88.413294, 88.413294, 88.413294, 88.41331, 88.414127, 88.414127, 88.414127, 88.414127, 88.414453, 88.414453, 88.414878, 88.414878, 88.414878, 88.414878, 88.415507, 88.415507, 88.415507, 88.416217, 88.416217, 88.41783, 88.41783, 88.41783, 88.41783, 88.418628, 88.418628, 88.418628, 88.419843, 88.419843, 88.419843, 88.420467, 88.420467, 88.420467, 88.420467, 88.420581, 88.420581, 88.42068, 88.42068, 88.42068, 88.42231, 88.42231, 88.42231, 88.422504, 88.422504, 88.422504, 88.422885, 88.422885, 88.422885, 88.423273, 88.423273, 88.423273, 88.423294, 88.423294, 88.423294, 88.423294, 88.42331, 88.42331, 88.42331, 88.424127, 88.424127, 88.424127, 88.424127, 88.424453, 88.424453, 88.424453, 88.424453, 88.424878, 88.424878, 88.424878, 88.425507, 88.425507, 88.425507, 88.426217, 88.426217, 88.426217, 88.42783, 88.42783, 88.428628, 88.428628, 88.428628, 88.428628, 88.429843, 88.429843, 88.430467, 88.430467, 88.430467, 88.430581, 88.430581, 88.43068, 88.43068, 88.43068, 88.43231, 88.43231, 88.432337, 88.432337, 88.432337, 88.432504, 88.432504, 88.432504, 88.432885, 88.432885, 88.432885, 88.433273, 88.433273, 88.433273, 88.433294, 88.433294, 88.433294, 88.43331, 88.43331, 88.43331, 88.434127, 88.434127, 88.434127, 88.434453, 88.434453, 88.434453, 88.434878, 88.434878, 88.434878, 88.434878, 88.435507, 88.435507, 88.435507, 88.435507, 88.436217, 88.436217, 88.436217, 88.436217, 88.43783, 88.43783, 88.438628, 88.438628, 88.438628, 88.438628, 88.439843, 88.439843, 88.439843, 88.440467, 88.440467, 88.440581, 88.440581, 88.44068, 88.44068, 88.44068, 88.44068, 88.44231, 88.44231, 88.44231, 88.44231, 88.442504, 88.442504, 88.442885, 88.442885, 88.442885, 88.442885, 88.443187, 88.443187, 88.443273, 88.443273, 88.443273, 88.443294, 88.443294, 88.443294, 88.44331, 88.44331, 88.443452, 88.443452, 88.443452, 88.443452, 88.444127, 88.444127, 88.444127, 88.444127, 88.444453, 88.444453, 88.444453, 88.444453, 88.444878, 88.444878, 88.444878, 88.445507, 88.445507, 88.445507, 88.445507, 88.446217, 88.446217, 88.446217, 88.44783, 88.44783, 88.44783, 88.44783, 88.448628, 88.448628, 88.450467, 88.450581, 88.450581, 88.450581, 88.452337, 88.452337, 88.452337, 88.452337, 88.452504, 88.452504, 88.452504, 88.452504, 88.453187, 88.453187, 88.453187, 88.453294, 88.453294, 88.453294, 88.453294, 88.45331, 88.45331, 88.45331, 88.45331, 88.453452, 88.453452, 88.453452, 88.454453, 88.454453, 88.454453, 88.454453, 88.454878, 88.454878, 88.454878, 88.455507, 88.455507, 88.455507, 88.456217, 88.456217, 88.456217, 88.45783, 88.45783, 88.45783, 88.458628, 88.458628, 88.458628, 88.459843, 88.459843, 88.459843, 88.459843, 88.460467, 88.460467, 88.460467, 88.460467, 88.460581, 88.460581, 88.460581, 88.460581, 88.46068, 88.46068, 88.46231, 88.46231, 88.46231, 88.462885, 88.462885, 88.462885, 88.462885, 88.463187, 88.463187, 88.463187, 88.463187, 88.463273, 88.463273, 88.463294, 88.463294, 88.463294, 88.463294, 88.46331, 88.46331, 88.46331, 88.463452, 88.463452, 88.463452, 88.463452, 88.464127, 88.464127, 88.464127, 88.464127, 88.470467, 88.470467, 88.470581, 88.470581, 88.470581, 88.472504, 88.472504, 88.473187, 88.473187, 88.473187, 88.473294, 88.473294, 88.473294, 88.473294, 88.47331, 88.47331, 88.47331, 88.47331, 88.473452, 88.473452, 88.474453, 88.474453, 88.474453, 88.474453, 88.474878, 88.474878, 88.474878, 88.475507, 88.475507, 88.475507, 88.475507, 88.476217, 88.476217, 88.47783, 88.47783, 88.478628, 88.478628, 88.478628, 88.478628, 88.479843, 88.479843, 88.480467, 88.480467, 88.480467, 88.480467, 88.480581, 88.480581, 88.480581, 88.48068, 88.48068, 88.48068, 88.48231, 88.48231, 88.48231, 88.482885, 88.482885, 88.482885, 88.483187, 88.483187, 88.483187, 88.483273, 88.483273, 88.483273, 88.483294, 88.483294, 88.483294, 88.48331, 88.48331, 88.48331, 88.48331, 88.483452, 88.483452, 88.484127, 88.484127, 88.490467, 88.490467, 88.490467, 88.490467, 88.490581, 88.490581, 88.490581, 88.492504, 88.492504, 88.492504, 88.493187, 88.493187, 88.493187, 88.493187, 88.493452, 88.493452, 88.493452, 88.493452, 88.494453, 88.494878, 88.494878, 88.494878, 88.494878, 88.495507, 88.495507, 88.495507, 88.495507, 88.496217, 88.496217, 88.496217, 88.496217, 88.49783, 88.49783, 88.49783, 88.49783, 88.498628, 88.498628, 88.503187, 88.503187, 88.503187, 88.503187, 88.503294, 88.503294, 88.503294, 88.50331, 88.50331, 88.50331, 88.50331, 88.503452, 88.503452, 88.503452, 88.503452, 88.510467, 88.510467, 88.510581, 88.510581, 88.510581, 88.510581, 88.513187, 88.513187, 88.513187, 88.513452, 88.513452, 88.513452, 88.523187, 88.523187, 88.523294, 88.523294, 88.52331, 88.52331, 88.52331, 88.52331, 88.523452, 88.523452, 88.523452, 88.523452, 88.530467, 88.530467, 88.530467, 88.530581, 88.530581, 88.530581, 88.530581, 88.543187, 88.543187, 88.543187, 88.543187, 88.543452, 88.543452, 88.543452, 88.563187, 88.563187, 88.563187, 88.563187, 88.563452, 88.563452] Column: Time_taken(min) ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54]
from Outlier import outlier_replacement
outlier_replacement(data)
Column: Delivery_person_Age ------------------------------------------------ Replacing Outliers with 5th percentile for lower Outliers, 95th percentile for Upper Outliers.... Adjust the module code for any other replacements......... Column: Delivery_person_Ratings ------------------------------------------------ Replacing Outliers with 5th percentile for lower Outliers, 95th percentile for Upper Outliers.... Adjust the module code for any other replacements......... Column: Restaurant_latitude ------------------------------------------------ Replacing Outliers with 5th percentile for lower Outliers, 95th percentile for Upper Outliers.... Adjust the module code for any other replacements......... Column: Restaurant_longitude ------------------------------------------------ Replacing Outliers with 5th percentile for lower Outliers, 95th percentile for Upper Outliers.... Adjust the module code for any other replacements......... Column: Delivery_location_latitude ------------------------------------------------ Replacing Outliers with 5th percentile for lower Outliers, 95th percentile for Upper Outliers.... Adjust the module code for any other replacements......... Column: Delivery_location_longitude ------------------------------------------------ Replacing Outliers with 5th percentile for lower Outliers, 95th percentile for Upper Outliers.... Adjust the module code for any other replacements......... Column: Time_taken(min) ------------------------------------------------ Replacing Outliers with 5th percentile for lower Outliers, 95th percentile for Upper Outliers.... Adjust the module code for any other replacements.........
outlier_detect(data)
Column: Delivery_person_Age ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [] Column: Delivery_person_Ratings ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [] Column: Restaurant_latitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [] Column: Restaurant_longitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [] Column: Delivery_location_latitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [] Column: Delivery_location_longitude ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: [] Column: Time_taken(min) ------------------------------------------------ Boxplot For Outlier Identification:
Lower Outliers: [] Upper Outliers: []
We have
data.head()
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | Time_taken(min) | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37.0 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 24.0 |
| 1 | b379 | bangres18del02 | 34.0 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 33.0 |
| 2 | 5d6d | bangres19del01 | 23.0 | 4.4 | 12.914264 | 77.678400 | 12.924264 | 77.688400 | drinks | motorcycle | 26.0 |
| 3 | 7a6a | coimbres13del02 | 38.0 | 4.7 | 11.003669 | 76.976494 | 11.053669 | 77.026494 | buffet | motorcycle | 21.0 |
| 4 | 70a2 | chenres12del01 | 32.0 | 4.6 | 12.972793 | 80.249982 | 13.012793 | 80.289982 | snack | scooter | 30.0 |
# Input & Output
X = data.drop('Time_taken(min)', axis=1)
y = data['Time_taken(min)']
print("Output Column Data (y):")
display(y.head())
print()
print("Input Columns Data (X):")
display(X.head())
Output Column Data (y):
0 24.0 1 33.0 2 26.0 3 21.0 4 30.0 Name: Time_taken(min), dtype: float64
Input Columns Data (X):
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37.0 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle |
| 1 | b379 | bangres18del02 | 34.0 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter |
| 2 | 5d6d | bangres19del01 | 23.0 | 4.4 | 12.914264 | 77.678400 | 12.924264 | 77.688400 | drinks | motorcycle |
| 3 | 7a6a | coimbres13del02 | 38.0 | 4.7 | 11.003669 | 76.976494 | 11.053669 | 77.026494 | buffet | motorcycle |
| 4 | 70a2 | chenres12del01 | 32.0 | 4.6 | 12.972793 | 80.249982 | 13.012793 | 80.289982 | snack | scooter |
X.head()
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37.0 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle |
| 1 | b379 | bangres18del02 | 34.0 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter |
| 2 | 5d6d | bangres19del01 | 23.0 | 4.4 | 12.914264 | 77.678400 | 12.924264 | 77.688400 | drinks | motorcycle |
| 3 | 7a6a | coimbres13del02 | 38.0 | 4.7 | 11.003669 | 76.976494 | 11.053669 | 77.026494 | buffet | motorcycle |
| 4 | 70a2 | chenres12del01 | 32.0 | 4.6 | 12.972793 | 80.249982 | 13.012793 | 80.289982 | snack | scooter |
X.head(2)
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37.0 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle |
| 1 | b379 | bangres18del02 | 34.0 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter |
pip install geopy
Requirement already satisfied: geopy in c:\users\vinit\anaconda3\lib\site-packages (2.4.1) Requirement already satisfied: geographiclib<3,>=1.52 in c:\users\vinit\anaconda3\lib\site-packages (from geopy) (2.0) Note: you may need to restart the kernel to use updated packages.
from geopy.distance import geodesic
for index, row in data.iterrows():
origin = (row['Restaurant_latitude'],row['Restaurant_longitude'])
destination = (row['Delivery_location_latitude'],row['Delivery_location_longitude'])
#calculate the distance
distance =round(geodesic(origin,destination).kilometers,2)
X.at[index, 'distance'] = distance
X.head()
| ID | Delivery_person_ID | Delivery_person_Age | Delivery_person_Ratings | Restaurant_latitude | Restaurant_longitude | Delivery_location_latitude | Delivery_location_longitude | Type_of_order | Type_of_vehicle | distance | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | NaN | indores13del02 | 37.0 | 4.9 | 22.745049 | 75.892471 | 22.765049 | 75.912471 | snack | motorcycle | 3.02 |
| 1 | b379 | bangres18del02 | 34.0 | 4.5 | 12.913041 | 77.683237 | 13.043041 | 77.813237 | snack | scooter | 20.14 |
| 2 | 5d6d | bangres19del01 | 23.0 | 4.4 | 12.914264 | 77.678400 | 12.924264 | 77.688400 | drinks | motorcycle | 1.55 |
| 3 | 7a6a | coimbres13del02 | 38.0 | 4.7 | 11.003669 | 76.976494 | 11.053669 | 77.026494 | buffet | motorcycle | 7.77 |
| 4 | 70a2 | chenres12del01 | 32.0 | 4.6 | 12.972793 | 80.249982 | 13.012793 | 80.289982 | snack | scooter | 6.20 |
columns_to_drop =['ID','Delivery_person_ID','Restaurant_latitude','Restaurant_longitude','Delivery_location_latitude','Delivery_location_longitude']
X.drop(columns_to_drop, axis=1, inplace=True, errors='ignore')
X.head()
| Delivery_person_Age | Delivery_person_Ratings | Type_of_order | Type_of_vehicle | distance | |
|---|---|---|---|---|---|
| 0 | 37.0 | 4.9 | snack | motorcycle | 3.02 |
| 1 | 34.0 | 4.5 | snack | scooter | 20.14 |
| 2 | 23.0 | 4.4 | drinks | motorcycle | 1.55 |
| 3 | 38.0 | 4.7 | buffet | motorcycle | 7.77 |
| 4 | 32.0 | 4.6 | snack | scooter | 6.20 |
4.2.3 Feature Modification (Data Pre-Processing)
Encoding
X.select_dtypes("O").head()
| Type_of_order | Type_of_vehicle | |
|---|---|---|
| 0 | snack | motorcycle |
| 1 | snack | scooter |
| 2 | drinks | motorcycle |
| 3 | buffet | motorcycle |
| 4 | snack | scooter |
X.head()
| Delivery_person_Age | Delivery_person_Ratings | Type_of_order | Type_of_vehicle | distance | |
|---|---|---|---|---|---|
| 0 | 37.0 | 4.9 | snack | motorcycle | 3.02 |
| 1 | 34.0 | 4.5 | snack | scooter | 20.14 |
| 2 | 23.0 | 4.4 | drinks | motorcycle | 1.55 |
| 3 | 38.0 | 4.7 | buffet | motorcycle | 7.77 |
| 4 | 32.0 | 4.6 | snack | scooter | 6.20 |
Saving above X Data as ref to UserInput Data For Real Time Prediction
X.to_csv("inpdata.csv", index=False)
Sklearn onehotencoding
# Sklearn function
from sklearn.preprocessing import OneHotEncoder
# Defining ohe object
ohe = OneHotEncoder(sparse=True, handle_unknown='ignore')
oheplace = ohe.fit_transform(X.select_dtypes("O")).toarray()
oheplace = pd.DataFrame(oheplace,columns=ohe.get_feature_names_out())
X = pd.concat([X, oheplace], axis=1)
X
| Delivery_person_Age | Delivery_person_Ratings | Type_of_order | Type_of_vehicle | distance | Type_of_order_buffet | Type_of_order_drinks | Type_of_order_meal | Type_of_order_snack | Type_of_vehicle_bicycle | Type_of_vehicle_electric_scooter | Type_of_vehicle_motorcycle | Type_of_vehicle_scooter | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 37.0 | 4.9 | snack | motorcycle | 3.02 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 1 | 34.0 | 4.5 | snack | scooter | 20.14 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 2 | 23.0 | 4.4 | drinks | motorcycle | 1.55 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 3 | 38.0 | 4.7 | buffet | motorcycle | 7.77 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 4 | 32.0 | 4.6 | snack | scooter | 6.20 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 45587 | 30.0 | 4.8 | meal | motorcycle | 1.49 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 45588 | 21.0 | 4.6 | buffet | motorcycle | 21.54 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 45589 | 30.0 | 4.9 | drinks | scooter | 4.65 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 45590 | 20.0 | 4.7 | snack | motorcycle | 6.22 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 45591 | 23.0 | 4.9 | snack | scooter | 9.14 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 |
45592 rows × 13 columns
del X['Type_of_order']
del X['Type_of_vehicle']
X.head(2)
| Delivery_person_Age | Delivery_person_Ratings | distance | Type_of_order_buffet | Type_of_order_drinks | Type_of_order_meal | Type_of_order_snack | Type_of_vehicle_bicycle | Type_of_vehicle_electric_scooter | Type_of_vehicle_motorcycle | Type_of_vehicle_scooter | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 37.0 | 4.9 | 3.02 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 1 | 34.0 | 4.5 | 20.14 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 |
# sklearn method
from sklearn.model_selection import train_test_split
xtrain, xtest, ytrain, ytest = train_test_split(X, y, test_size=0.30, random_state=123)
xtrain.shape,ytrain.shape
((31914, 11), (31914,))
xtest.shape,ytest.shape
((13678, 11), (13678,))
Sending xtrain & ytrain data to a algorithm, where it can study the patterns and gives predictive model to generate y for future x values
Taken y data is numerical, we can apply machine learning supervised regression algorithms
In regression we have below algorithms
Giving xtrain , ytrain data to all the above models to get better performance model
pip install xgboost
Requirement already satisfied: xgboost in c:\users\vinit\anaconda3\lib\site-packages (2.0.3) Requirement already satisfied: numpy in c:\users\vinit\anaconda3\lib\site-packages (from xgboost) (1.24.3) Requirement already satisfied: scipy in c:\users\vinit\anaconda3\lib\site-packages (from xgboost) (1.11.1) Note: you may need to restart the kernel to use updated packages.
from sklearn.linear_model import LinearRegression # MLR
from sklearn.preprocessing import PolynomialFeatures # Poly
from sklearn.linear_model import Lasso, Ridge # Lasso & Ridge
from sklearn.neighbors import KNeighborsRegressor # KNN
from sklearn.svm import SVR # SVM
from sklearn.tree import DecisionTreeRegressor # DT
from sklearn.ensemble import RandomForestRegressor # RF
from xgboost import XGBRegressor # XGB
# Multiple Linear Regression
mlr = LinearRegression() # inside params - intercept (optional)
# Polynomial Regression
polyfeat = PolynomialFeatures(degree = 2) # degree is hyperparam
poly = LinearRegression()
# Lasso (L1) & Ridge (L2)
lasso = Lasso(alpha = 5) # alpha - hyperparam - penalty
ridge = Ridge(alpha = 5)
# KNN Regressor
knn = KNeighborsRegressor(n_neighbors=5) # n_neighbors is hypparam
# Support Vector Regressor
svr = SVR(kernel='rbf') # non-linear kernel for non-linear data
# Decision Tree Regressor
dt = DecisionTreeRegressor()
# Random Forest regressor
rf = RandomForestRegressor(n_estimators=50) # n_estimators - hyperparam - number of decision trees
# Xgb
xgb = XGBRegressor()
Model Training
# Model Training
mlr.fit(xtrain, ytrain)
LinearRegression()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
LinearRegression()
mlr.coef_, mlr.intercept_
(array([ 4.35998650e-01, -1.22526760e+01, 8.78561903e-05, 3.35703585e-03,
-1.13182228e-01, 8.32390459e-02, 2.65861467e-02, -3.33696057e-03,
-1.08807587e+00, 1.95642672e+00, -8.65013891e-01]),
69.88900132095598)
eq = str(mlr.intercept_)
for i,j in zip(xtrain.columns,mlr.coef_):
mx = '{}*{}'.format(i,j)
eq = eq+") + ("+mx
eq
'69.88900132095598) + (Delivery_person_Age*0.435998649718888) + (Delivery_person_Ratings*-12.252676012052177) + (distance*8.785619025700895e-05) + (Type_of_order_buffet *0.0033570358454717707) + (Type_of_order_drinks *-0.11318222848594363) + (Type_of_order_meal *0.08323904591986576) + (Type_of_order_snack *0.026586146720603165) + (Type_of_vehicle_bicycle *-0.0033369605706106823) + (Type_of_vehicle_electric_scooter *-1.088075865473514) + (Type_of_vehicle_motorcycle *1.9564267174916001) + (Type_of_vehicle_scooter *-0.8650138914474751'
xtrain.head()
| Delivery_person_Age | Delivery_person_Ratings | distance | Type_of_order_buffet | Type_of_order_drinks | Type_of_order_meal | Type_of_order_snack | Type_of_vehicle_bicycle | Type_of_vehicle_electric_scooter | Type_of_vehicle_motorcycle | Type_of_vehicle_scooter | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 25709 | 24.0 | 4.9 | 10.59 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 27029 | 28.0 | 4.5 | 20.13 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 3625 | 36.0 | 5.0 | 12.41 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 23660 | 22.0 | 4.3 | 7.71 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 19483 | 33.0 | 5.0 | 6.21 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 |
# Considering 5 x columns only for model training, if we consider all the x columns we will have memory error
x_train_p = xtrain.iloc[:,0:5]
x_test_p = xtest.iloc[:,0:5]
x_train_p.head(2)
| Delivery_person_Age | Delivery_person_Ratings | distance | Type_of_order_buffet | Type_of_order_drinks | |
|---|---|---|---|---|---|
| 25709 | 24.0 | 4.9 | 10.59 | 1.0 | 0.0 |
| 27029 | 28.0 | 4.5 | 20.13 | 1.0 | 0.0 |
# converting x data to poly features
x_train_poly = polyfeat.fit_transform(xtrain)
x_test_poly = polyfeat.transform(xtest)
x_train_poly.shape, x_test_poly.shape
((31914, 78), (13678, 78))
# Model Training
poly.fit(x_train_poly, ytrain)
LinearRegression()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
LinearRegression()
# params
len(poly.coef_), poly.intercept_
(78, 1226.4641471051107)
# Model Training
lasso.fit(xtrain,ytrain), ridge.fit(xtrain,ytrain)
(Lasso(alpha=5), Ridge(alpha=5))
# Model params
lasso.intercept_, lasso.coef_
(16.49438627902628,
array([ 3.30716643e-01, -0.00000000e+00, 4.83853889e-05, -0.00000000e+00,
-0.00000000e+00, 0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
-0.00000000e+00, 0.00000000e+00, -0.00000000e+00]))
ridge.intercept_, ridge.coef_
(69.68896830393777,
array([ 4.36160966e-01, -1.22107129e+01, 8.81261021e-05, 3.30395858e-03,
-1.13135987e-01, 8.32786893e-02, 2.65533389e-02, -2.03987678e-03,
-1.08734414e+00, 1.95544487e+00, -8.66060859e-01]))
# Model Train
knn.fit(xtrain, ytrain)
KNeighborsRegressor()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
KNeighborsRegressor()
# Model params
knn.get_params()
{'algorithm': 'auto',
'leaf_size': 30,
'metric': 'minkowski',
'metric_params': None,
'n_jobs': None,
'n_neighbors': 5,
'p': 2,
'weights': 'uniform'}
svr.fit(xtrain, ytrain) # model train
svr.get_params() # params
# Model Training
dt.fit(xtrain, ytrain)
DecisionTreeRegressor()In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
DecisionTreeRegressor()
dt.get_params()
{'ccp_alpha': 0.0,
'criterion': 'squared_error',
'max_depth': None,
'max_features': None,
'max_leaf_nodes': None,
'min_impurity_decrease': 0.0,
'min_samples_leaf': 1,
'min_samples_split': 2,
'min_weight_fraction_leaf': 0.0,
'random_state': None,
'splitter': 'best'}
feature_names = list(xtrain.columns)
# Tree Visualization
from sklearn.tree import plot_tree
plt.figure(figsize=(18,18))
plot_tree(dt,filled=True,fontsize=8,feature_names=feature_names,max_depth=5)
plt.show()
# Model Train
rf.fit(xtrain, ytrain)
# n_estimators is the number of trees hyperparam
RandomForestRegressor(n_estimators=50)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook.
RandomForestRegressor(n_estimators=50)
xtrain
| Delivery_person_Age | Delivery_person_Ratings | distance | Type_of_order_buffet | Type_of_order_drinks | Type_of_order_meal | Type_of_order_snack | Type_of_vehicle_bicycle | Type_of_vehicle_electric_scooter | Type_of_vehicle_motorcycle | Type_of_vehicle_scooter | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 25709 | 24.0 | 4.9 | 10.59 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 27029 | 28.0 | 4.5 | 20.13 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 3625 | 36.0 | 5.0 | 12.41 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 23660 | 22.0 | 4.3 | 7.71 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 19483 | 33.0 | 5.0 | 6.21 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 7763 | 20.0 | 4.8 | 12.46 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 |
| 15377 | 27.0 | 4.7 | 10.69 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 17730 | 36.0 | 4.3 | 9.18 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 28030 | 31.0 | 5.0 | 12.42 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 |
| 15725 | 21.0 | 4.6 | 20.85 | 0.0 | 0.0 | 0.0 | 1.0 | 0.0 | 0.0 | 0.0 | 1.0 |
31914 rows × 11 columns
# Model Params
print("Model Params:")
print(rf.get_params())
print()
print("Columns Importance:")
print()
for i, j in zip(rf.feature_names_in_, rf.feature_importances_):
print(i+": "+str(j))
Model Params:
{'bootstrap': True, 'ccp_alpha': 0.0, 'criterion': 'squared_error', 'max_depth': None, 'max_features': 1.0, 'max_leaf_nodes': None, 'max_samples': None, 'min_impurity_decrease': 0.0, 'min_samples_leaf': 1, 'min_samples_split': 2, 'min_weight_fraction_leaf': 0.0, 'n_estimators': 50, 'n_jobs': None, 'oob_score': False, 'random_state': None, 'verbose': 0, 'warm_start': False}
Columns Importance:
Delivery_person_Age: 0.21113325741176506
Delivery_person_Ratings: 0.2780928396287989
distance: 0.3692709426639769
Type_of_order_buffet : 0.024185862523114998
Type_of_order_drinks : 0.024116206796416385
Type_of_order_meal : 0.02444487452960586
Type_of_order_snack : 0.024032814883678564
Type_of_vehicle_bicycle : 0.0005696476065127236
Type_of_vehicle_electric_scooter : 0.006199652036133369
Type_of_vehicle_motorcycle : 0.03134412591377991
Type_of_vehicle_scooter : 0.006609776006217149
# Tree Visualization
from sklearn.tree import plot_tree
plt.figure(figsize=(18,18))
plot_tree(rf.estimators_[0],filled=True,fontsize=8,feature_names=feature_names,max_depth=5)
plt.show()
# Model Training
xgb.fit(xtrain, ytrain)
XGBRegressor(base_score=None, booster=None, callbacks=None,
colsample_bylevel=None, colsample_bynode=None,
colsample_bytree=None, device=None, early_stopping_rounds=None,
enable_categorical=False, eval_metric=None, feature_types=None,
gamma=None, grow_policy=None, importance_type=None,
interaction_constraints=None, learning_rate=None, max_bin=None,
max_cat_threshold=None, max_cat_to_onehot=None,
max_delta_step=None, max_depth=None, max_leaves=None,
min_child_weight=None, missing=nan, monotone_constraints=None,
multi_strategy=None, n_estimators=None, n_jobs=None,
num_parallel_tree=None, random_state=None, ...)In a Jupyter environment, please rerun this cell to show the HTML representation or trust the notebook. XGBRegressor(base_score=None, booster=None, callbacks=None,
colsample_bylevel=None, colsample_bynode=None,
colsample_bytree=None, device=None, early_stopping_rounds=None,
enable_categorical=False, eval_metric=None, feature_types=None,
gamma=None, grow_policy=None, importance_type=None,
interaction_constraints=None, learning_rate=None, max_bin=None,
max_cat_threshold=None, max_cat_to_onehot=None,
max_delta_step=None, max_depth=None, max_leaves=None,
min_child_weight=None, missing=nan, monotone_constraints=None,
multi_strategy=None, n_estimators=None, n_jobs=None,
num_parallel_tree=None, random_state=None, ...)xgb.get_params()
{'objective': 'reg:squarederror',
'base_score': None,
'booster': None,
'callbacks': None,
'colsample_bylevel': None,
'colsample_bynode': None,
'colsample_bytree': None,
'device': None,
'early_stopping_rounds': None,
'enable_categorical': False,
'eval_metric': None,
'feature_types': None,
'gamma': None,
'grow_policy': None,
'importance_type': None,
'interaction_constraints': None,
'learning_rate': None,
'max_bin': None,
'max_cat_threshold': None,
'max_cat_to_onehot': None,
'max_delta_step': None,
'max_depth': None,
'max_leaves': None,
'min_child_weight': None,
'missing': nan,
'monotone_constraints': None,
'multi_strategy': None,
'n_estimators': None,
'n_jobs': None,
'num_parallel_tree': None,
'random_state': None,
'reg_alpha': None,
'reg_lambda': None,
'sampling_method': None,
'scale_pos_weight': None,
'subsample': None,
'tree_method': None,
'validate_parameters': None,
'verbosity': None}
Checking Trained Model Performances on Test Data
Using x_test data we will be getting predictions, these predictions will be compared to y_test
To check Model Performance we can use evaluation methods
For regression we can use these evaluation
| Performance Metric | Regression |
|---|---|
| Loss or Error | MeanSquaredError/RMSE (For both Train and Test) |
| Model Score (Evaluation) | R2score (Coefficient of Determination) |
| Bias-Variance Trade Off | Higher error & Lower score (underfit) |
| -- | Low Train error & High Test error (Overfit) |
| Cross-Val Score | Checking trained model performance on entire X and y data |
from sklearn.metrics import r2_score, mean_squared_error
from sklearn.model_selection import cross_val_score
generating predictions for xtest data
Single Function for all models Evaluation
names = ['Multiple Linear Regression','Polynomial Regression','Lasso Regression',
'Ridge Regression','KNN Regressor', 'Decision Tree Regressor','RandomForest Regressor','Xgboost Regressor']
models = {'mlr':mlr, 'poly':poly, 'lasso':lasso, 'ridge':ridge,
'knn':knn, 'dt':dt, 'rf':rf, 'xgb':xgb}
X = pd.concat([xtrain, xtest], axis = 0)
y = pd.concat([ytrain, ytest], axis = 0)
X.shape, y.shape
((45592, 11), (45592,))
# Defining empty lists
trainRMSE = []
testRMSE = []
trainscore = []
testscore = []
fit = []
crossvalscore = []
Short Code
for name, model in models.items():
if name == 'poly':
# ptrain = xtrain.iloc[:,0:5]
# ptest = xtest.iloc[:,0:5]
pftrain = polyfeat.transform(xtrain)
pftest = polyfeat.transform(xtest)
# RMSE , R2score
trainRMSE.append(round(np.sqrt(mean_squared_error(ytrain, models[name].predict(pftrain))),2))
testRMSE.append(round(np.sqrt(mean_squared_error(ytest, models[name].predict(pftest))), 2))
trainscore.append(round(r2_score(ytrain, models[name].predict(pftrain)),2))
testscore.append(round(r2_score(ytest, models[name].predict(pftest)),2))
trscore = r2_score(ytrain, models[name].predict(pftrain))
tescore = r2_score(ytest, models[name].predict(pftest))
# Bias-Variance Trade off
if trscore>=0.60 and tescore>=0.60:
if trscore>tescore:
if trscore-tescore>=0.10:
fit.append("Overfit")
elif trscore-tescore<0.10:
fit.append("Goodfit")
else:
fit.append('Nofit')
elif tescore>trscore:
if tescore-trscore>=0.10:
fit.append("Overfit")
elif tescore-trscore<0.10:
fit.append("Goodfit")
else:
fit.append('Nofit')
elif trscore<0.60 and tescore<0.60:
if abs(trscore)==0 and abs(tescore)==0:
fit.append("Nofit")
else:
fit.append("Underfit")
else:
fit.append("Nofit")
# Cross validation
scores = cross_val_score(models[name], X, y, cv=3)
crossvalscore.append(round(scores.mean(),2))
else:
# RMSE, R2score
trainRMSE.append(round(np.sqrt(mean_squared_error(ytrain, models[name].predict(xtrain))),2))
testRMSE.append(round(np.sqrt(mean_squared_error(ytest, models[name].predict(xtest))),2))
trainscore.append(round(r2_score(ytrain, models[name].predict(xtrain)),2))
testscore.append(round(r2_score(ytest, models[name].predict(xtest)),2))
trscore = r2_score(ytrain, models[name].predict(xtrain))
tescore = r2_score(ytest, models[name].predict(xtest))
# Bias-Variance Trade off
if trscore>=0.60 and tescore>=0.60:
if trscore>tescore:
if trscore-tescore>=0.10:
fit.append("Overfit")
elif trscore-tescore<0.10:
fit.append("Goodfit")
else:
fit.append('Nofit')
elif tescore>trscore:
if tescore-trscore>=0.10:
fit.append("Overfit")
elif tescore-trscore<0.10:
fit.append("Goodfit")
else:
fit.append('Nofit')
elif trscore<0.60 and tescore<0.60:
if abs(trscore)==0 and abs(tescore)==0:
fit.append("Nofit")
else:
fit.append("Underfit")
else:
fit.append("Nofit")
# Cross-val score
scores = cross_val_score(models[name], X, y, cv=3)
crossvalscore.append(round(scores.mean(),2))
pd.set_option('display.float_format', lambda x: '%.3f' % x)
display(pd.DataFrame({'Model':names, 'Trainedmodel':models.values(), 'TrainRMSE':trainRMSE, 'TestRMSE':testRMSE,
'Trainscore':trainscore, 'Testscore':testscore, 'Crossvalscore':crossvalscore, 'Fit':fit}))
| Model | Trainedmodel | TrainRMSE | TestRMSE | Trainscore | Testscore | Crossvalscore | Fit | |
|---|---|---|---|---|---|---|---|---|
| 0 | Multiple Linear Regression | LinearRegression() | 8.420 | 8.340 | 0.190 | 0.200 | 0.190 | Underfit |
| 1 | Polynomial Regression | LinearRegression() | 8.100 | 8.040 | 0.250 | 0.260 | 0.190 | Underfit |
| 2 | Lasso Regression | Lasso(alpha=5) | 8.990 | 8.970 | 0.080 | 0.080 | 0.080 | Underfit |
| 3 | Ridge Regression | Ridge(alpha=5) | 8.420 | 8.340 | 0.190 | 0.200 | 0.190 | Underfit |
| 4 | KNN Regressor | KNeighborsRegressor() | 6.870 | 8.510 | 0.460 | 0.170 | 0.180 | Underfit |
| 5 | Decision Tree Regressor | DecisionTreeRegressor() | 2.170 | 10.280 | 0.950 | -0.210 | -0.220 | Nofit |
| 6 | RandomForest Regressor | (DecisionTreeRegressor(max_features=1.0, rando... | 3.500 | 8.030 | 0.860 | 0.260 | 0.260 | Nofit |
| 7 | Xgboost Regressor | XGBRegressor(base_score=None, booster=None, ca... | 6.690 | 7.400 | 0.490 | 0.370 | 0.370 | Underfit |
X.head(3)
| Delivery_person_Age | Delivery_person_Ratings | distance | Type_of_order_buffet | Type_of_order_drinks | Type_of_order_meal | Type_of_order_snack | Type_of_vehicle_bicycle | Type_of_vehicle_electric_scooter | Type_of_vehicle_motorcycle | Type_of_vehicle_scooter | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 25709 | 24.000 | 4.900 | 10.590 | 1.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1.000 |
| 27029 | 28.000 | 4.500 | 20.130 | 1.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 0.000 | 1.000 |
| 3625 | 36.000 | 5.000 | 12.410 | 0.000 | 0.000 | 0.000 | 1.000 | 0.000 | 0.000 | 1.000 | 0.000 |
Better Perfomance Model
from the above table we can see that Xgboost Regressor Giving less test loss (RMSE) & better test score compared to other.
inpdata = pd.read_csv("inpdata.csv")
inpdata.head()
| Delivery_person_Age | Delivery_person_Ratings | Type_of_order | Type_of_vehicle | distance | |
|---|---|---|---|---|---|
| 0 | 37.000 | 4.900 | snack | motorcycle | 3.020 |
| 1 | 34.000 | 4.500 | snack | scooter | 20.140 |
| 2 | 23.000 | 4.400 | drinks | motorcycle | 1.550 |
| 3 | 38.000 | 4.700 | buffet | motorcycle | 7.770 |
| 4 | 32.000 | 4.600 | snack | scooter | 6.200 |
def timeprediction():
print("Model Built on These Below features:")
print()
print(list(inpdata.columns[0:len(inpdata.columns)]))
print()
print("Enter the below Details one by One:")
print()
age = eval(input("Enter Delivery person Age:"))
rating = eval(input("Enter devlivery person Ratings(out of 5):"))
print()
print("Enter Type of Order:")
display(inpdata.Type_of_order.unique())
order = input()
print()
print("Enter Type of Vehicle:")
display(inpdata.Type_of_vehicle.unique())
vehicle = input()
print()
distance = eval(input("Enter Distance to be covered in (kms):"))
print()
print()
data = pd.DataFrame([[age, rating, order, vehicle, distance]], columns=inpdata.columns[0:len(inpdata.columns)])
print("****************************Given Data**************************")
display(data)
# Data pre-processing
ohedata = ohe.transform(data[['Type_of_order', 'Type_of_vehicle']]).toarray()
ohedata = pd.DataFrame(ohedata, columns=ohe.get_feature_names_out())
data = pd.concat([data.drop(['Type_of_order', 'Type_of_vehicle'], axis=1),ohedata],axis=1)
#predictions
time = round(xgb.predict(data)[0])
print()
print("Estimated Time for Delivery: {} min".format(time))
timeprediction()
Model Built on These Below features: ['Delivery_person_Age', 'Delivery_person_Ratings', 'Type_of_order', 'Type_of_vehicle', 'distance'] Enter the below Details one by One: Enter Delivery person Age:23 Enter devlivery person Ratings(out of 5):4.5 Enter Type of Order:
array(['snack ', 'drinks ', 'buffet ', 'meal '], dtype=object)
snack Enter Type of Vehicle:
array(['motorcycle ', 'scooter ', 'electric_scooter ', 'bicycle '],
dtype=object)
bicycle Enter Distance to be covered in (kms):8 ****************************Given Data**************************
| Delivery_person_Age | Delivery_person_Ratings | Type_of_order | Type_of_vehicle | distance | |
|---|---|---|---|---|---|
| 0 | 23 | 4.500 | snack | bicycle | 8 |
Estimated Time for Delivery: 17 min